Skip to content

feat(account): 新增账号测试功能,测试该账号的文字/图片模型是否可用,与凭证可用性测试 - #452

Open
agermel wants to merge 1 commit into
qxcnm:mainfrom
agermel:feature/select
Open

feat(account): 新增账号测试功能,测试该账号的文字/图片模型是否可用,与凭证可用性测试#452
agermel wants to merge 1 commit into
qxcnm:mainfrom
agermel:feature/select

Conversation

@agermel

@agermel agermel commented Aug 26, 2026

Copy link
Copy Markdown
Contributor

RT
RomeoGroeger696709@outlook com

变更摘要

  • 新增「测试账号」入口:对账号发一次真实上游请求,验证其使用文字/图片模型的凭据是否可用,通过 SSE / Tauri 事件把进度与结果实时回传到弹窗。
  • 图片测试走 image_generation 工具(顶层文字模型 + gpt-image-2 工具),避免把 gpt-image-2 当顶层主模型直连被上游以「ChatGPT 账号不支持该模型」拒绝。
  • 依据所选模型能力(supports_image_generation)自动修正测试类型,并把 kind 字段端到端打通(修复 Tauri 命令静默丢弃 kind)。
  • 依据结果更新账号状态:401/403 → 不可用,429 → 限流,成功 → 恢复 active(手动 disabled/inactive 不自动恢复)。

改动范围

  • Frontend
  • Desktop / Tauri
  • Service
  • Gateway / Protocol Adapter
  • Docs / Governance
  • Workflow / Release

主要文件

  • crates/service/src/account/account_test.rs(新增)— 测试核心:发起请求、解析 SSE、状态回写、取消、脱敏
  • crates/service/src/http/account_test_events.rs(新增)— 账号测试事件的 SSE 端点(tiny_http + axum 双实现)
  • crates/service/src/account/account_status.rs — 测试结果 → 账号状态(unavailable / limited / restore active)
  • crates/service/src/gateway/core/runtime_config.rs — 账号测试代理解析 + 带超时的上游客户端
  • crates/service/src/models_v2/mod.rssupports_image_generation() 能力判定
  • apps/src/components/modals/account-test-modal.tsx(新增)— 测试弹窗(分组下拉 + 实时终端 + 图片预览)
  • apps/src/lib/api/account-test-events.ts(新增)— Tauri / SSE 事件监听
  • apps/src/components/ui/select.tsx — 下拉锚定默认 alignItemWithTrigger=false

验证

  • pnpm -C apps run test
  • pnpm -C apps run build
  • pnpm -C apps run test:ui
  • cargo test --workspace
  • 其他本地验证已说明

已执行的实际验证:

cargo check -p codexmanager-service          # 通过
cargo check (apps/src-tauri)                 # 通过

未执行的验证与原因:

  • cargo test --workspace:未执行(account_test.rs 内的单元测试尚未跑,提交前建议补跑 cargo test -p codexmanager-service)。
  • 前端 test / build / test:ui:未执行,需在提交前跑一遍确认无类型/构建回归。

风险与影响面

  • select.tsx 的 alignItemWithTrigger=false 是全局默认改动,影响所有 Select 组件,需回归检查其它下拉(账号管理、模型管理等)无视觉/定位回退。
  • 测试会发真实上游请求,会消耗账号配额/token。
  • 测试成功会自动把「自动失败态(unavailable/limited/banned)」账号恢复为 active——这是有意的副作用,但会影响账号池可用性,需确认符合预期。
  • 主网关路径另有 5 处既有的代理地址回显错误串(runtime_config.rs 的 *_upstream_client_for_account / websocket_proxy_url_for_account)本次未一并修复,建议单独开提交处理。

备注

  • 提交前请确认未包含敏感 token、cookie、API key(本次错误信息均已脱敏,日志不打 token / 代理地址)。
  • 仓库根下还有未跟踪文件 docs/zh-CN/report/账号测试UX缺口报告.md,需决定是否随本 PR 提交。

新增「测试账号」入口:对账号发一次真实上游请求,验证其使用文字/图片模型的凭据是否可用,通过 SSE / Tauri 事件把进度与结果实时回传到弹窗。

- 图片测试走 image_generation 工具(顶层文字模型 + gpt-image-2 工具),而不是把 gpt-image-2 当顶层主模型直连——后者会被上游以「ChatGPT 账号 不支持该模型」拒绝。
- 依据所选模型的能力(supports_image_generation)自动修正测试类型,并把kind 字段端到端打通(修复 Tauri 命令静默丢弃 kind 的问题)。
- 依据测试结果更新账号状态:401/403 → 不可用,429 → 限流,成功 → 恢复active(手动 disabled/inactive 不自动恢复)。
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant